package com.av.db.dataobjects;

import java.io.Serializable;

import com.av.db.dataobjects.enums.Catalogo;

/**
 * Elemento de un catalogo en especifico. Los tipos de catalogo estan en
 * com.av.db.dataobjects.enums.Catalogo
 * 
 * @author Emmanuel Alcantara Garces
 * 
 */
public class ElementoCatalogo implements Serializable {
	private static final long serialVersionUID = 1L;

	public static final String ID = "id";
	public static final String CATALOGO = "catalogo";
	public static final String DESCRIPCION = "descripcion";
	public static final String COSTO = "costo";
	public static final String ACTIVO = "activo";

	// Miembros

	private int id;
	private Catalogo catalogo;
	private String descripcion;
	private double costo;
	private boolean activo;

	// Propiedades

	/**
	 * Obtiene el identificador de la tabla
	 */
	public int getId() {
		return id;
	}// getId

	/**
	 * Asigna el identificador de la tabla
	 * 
	 * @param id
	 */
	@SuppressWarnings("unused")
	private void setId(int id) {
		this.id = id;
	}// setId

	/**
	 * Obtiene el idCatalogo del catalogo al que pertenece este elemento
	 * 
	 * @return
	 */
	public Catalogo getCatalogo() {
		return catalogo;
	}// getIdCatalogo

	/**
	 * Asigna el idCatalogo del catalogo al que pertenece este elemento
	 * 
	 * @param idCatalogo
	 */
	public void setCatalogo(Catalogo catalogo) {
		this.catalogo = catalogo;
	}// setIdCatalogo

	/**
	 * Obtiene la descripcion del elemento
	 * 
	 * @return
	 */
	public String getDescripcion() {
		return descripcion;
	}// getDescripcion

	/**
	 * Asigna la descripcion del elemento
	 * 
	 * @param descripcion
	 */
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}// setDescripcion

	/**
	 * Obtiene el costo de este elemento
	 * 
	 * @return
	 */
	public double getCosto() {
		return costo;
	}// getCosto

	/**
	 * Asigna el costo de este elemento
	 * 
	 * @param costo
	 */
	public void setCosto(double costo) {
		this.costo = costo;
	}// setCosto

	/**
	 * Indica si esta activo el elemento o no
	 * 
	 * @return
	 */
	public boolean isActivo() {
		return activo;
	}// isActivo

	/**
	 * Asigna si esta activo el elemento o no
	 * 
	 * @param monto
	 */
	public void setActivo(boolean activo) {
		this.activo = activo;
	}// setActivo

	// Funciones

	public String toString() {
		return id + "-" + descripcion;
	}// toString

	public boolean equals(Object o) {
		if (o == null || !(o instanceof ElementoCatalogo)) {
			return false;
		}
		return ((ElementoCatalogo) o).getId() == id;
	}// equals

}// ElementoCatalogo
